package com.zcg.blogger.service;

import java.util.List;

import com.zcg.blogger.model.Article;
import com.zcg.blogger.model.Category;
import com.zcg.blogger.model.Comment;

public interface ArticleService {
	
	/**
	 * 新增一篇文章
	 * @param article
	 */
	public void add(Article article);

	/**
	 * 更新一篇文章
	 * @param article
	 */
	public void update(Article article);

	/**
	 * 删除一篇文章
	 * @param article
	 */
	public void delete(Article article);
	
	/**
	 * 根据id得到一篇文章
	 * @param id
	 * @return
	 */
	public Article loadById(int id);
	
	/**
	 * 根据id得到下一篇文章
	 * @param id
	 * @return
	 */
	public Article loadNextById(int id);

	/**
	 * 根据id得到上一篇文章
	 * @param id
	 * @return
	 */
	public Article loadPreviousById(int id);
	
	/**
	 * 根据类别id得到类别
	 * @param categoryId
	 * @return
	 */
	public Category loadByCategoryId(int categoryId);

	/**
	 * 根据标题查询文章
	 * @param title
	 * @return
	 */
	public Article loadByTitle(String title);

	/**
	 * 查询所有文章列表
	 * @return
	 */
	public List<Article> loadArticleAll();
	
	/**
	 * 查询文章类别
	 * @return
	 */
	public List<Category> loadArticleCategorys();
	
	/**
	 * 根据类别查询出所有的文章列表
	 * @param id 
	 * @return  文章列表
	 */
	public List<Article> loadArticlesByCategoryId(int id);

	/**
	 * 返回最热门的前10篇文章
	 * @return
	 */
	public List<Article> loadArticleHot();
	
	/**
	 * 根据id返回文章的评论列表
	 * @param id
	 * @return
	 */
	public List<Comment> loadCommentByArticleId(int id);
	
	/**
	 * 根据id返回文章的评论数
	 * @param id
	 * @return
	 */
	public int loadCommentCountByArticleId(int id);

	/**
	 * 添加文章评论
	 * @param comment
	 */
	public int addComment(Comment comment);
	
	/**
	 * 点赞
	 * @param id
	 */
	public void addPraise(int id);
	
	/**
	 * 给评论点赞
	 * @param id
	 */
	public void addCommentPraise(int id);
}
